package Logica.Celdas;

import Graficas.InterfaceGrafica;
import Graficas.SpriteMovements;
import Logica.Mario;
import Logica.Personaje;
import Logica.PowerUps.PowerUp;

/**
 * Clase que representa una caja, la cual es una celda especial que permite almacenar un powerup
 * dentro.
 * 
 * @author Mariano Rodecker
 * @author Matias Varela
 * 
 * 
 */
public class Caja extends Celda {
	/* ################## ATRIBUTOS DE INSTANCIA ######################## */
	protected PowerUp powerup;

	/* ################## CONSTRUCTORES ######################## */
	public Caja(int sizeX, int sizeY, SpriteMovements spriteMovements, InterfaceGrafica ig, PowerUp powerup) {
		super(sizeX, sizeY, spriteMovements, ig);
		this.powerup = powerup;
	}

	/* ################## COMANDOS ######################## */
	public void setX(int x) {
		super.setX(x);
		if (powerup != null)
			powerup.setX(x);
	}

	public void setY(int y) {
		super.setY(y);
		if (powerup != null)
			powerup.setY(y);
	}
	@Override
	public void golpear(Mario m) {
		if (powerup != null){
			powerup.getInteligencia().insertarPowerUpEnMapaVisible(powerup);
			powerup=null;
		}

	}
	public void setPowerUp(PowerUp pw){
		this.powerup=pw;
	}
	@Override
	public void modificar(Personaje p) {
		// TODO Auto-generated method stub

	}
	@Override
	public void romper() {
		// TODO Auto-generated method stub
		
	}

	/* ################## CONSULTAS ######################## */

	/**
	 * Retorna el powerup almacenado
	 * 
	 * @return el powerup almacenado
	 * 
	 */
	public PowerUp getPowerUp() {
		return powerup;
	}


	@Override
	public Celda clone() {
		Caja toReturn = new Caja(this.getSizeX(), this.getSizeY(), this.getSpriteMovements(), ig, powerup);
		toReturn.setX(this.getX());
		toReturn.setY(this.getY());
		toReturn.setInAnimation(this.isInAnimation());
		toReturn.setInteligencia(intel);
		if (powerup != null)
			toReturn.setPowerUp(powerup.clone());
		return toReturn;

	}

	

}